import { defineStore } from 'pinia'
import { ref } from 'vue'
import axios from '../axios/axiosHelper'
import { ElMessage } from 'element-plus'
import router from '../router'

export const useUserStore = defineStore('user', () => {
  // 用户信息状态
  const user = ref(null)
  const token = ref('')
  const isLoggedIn = ref(false)
  
  // 从本地存储恢复用户会话
  const initUserState = () => {
    const savedUser = localStorage.getItem('user')
    const savedToken = localStorage.getItem('token')
    
    if (savedUser && savedToken) {
      user.value = JSON.parse(savedUser)
      token.value = savedToken
      isLoggedIn.value = true
    }
  }
  
  // 登录方法
  const login = async (username, password) => {
    try {
      const response = await axios.post('/api/users/login', {
        name: username,
        passwd: password
      })
      
      // 登录成功，保存用户信息
      user.value = response.data
      token.value = 'mock-token-' + Date.now() // 实际项目中应该从后端获取token
      isLoggedIn.value = true
      
      // 保存到本地存储
      localStorage.setItem('user', JSON.stringify(user.value))
      localStorage.setItem('token', token.value)
      
      // 登录成功提示
      ElMessage.success('登录成功')
      
      // 跳转到index页面
      router.push('/index')
      
      return true
    } catch (error) {
      // 处理登录错误
      let errorMessage = '登录失败'
      
      if (error.response) {
        // 服务器返回的错误信息
        errorMessage = error.response.data.message || errorMessage
      }
      
      ElMessage.error(errorMessage)
      return false
    }
  }
  
  // 登出方法
  const logout = () => {
    // 清除用户状态
    user.value = null
    token.value = ''
    isLoggedIn.value = false
    
    // 清除本地存储
    localStorage.removeItem('user')
    localStorage.removeItem('token')
    
    // 跳转到登录页
    router.push('/')
  }
  
  // 初始化用户状态
  initUserState()
  
  return {
    user,
    token,
    isLoggedIn,
    login,
    logout
  }
})